/* 

给定一个整数数组，判断是否存在重复元素。

如果存在一值在数组中出现至少两次，函数返回 true 。如果数组中每个元素都不相同，则返回 false 。

示例：
输入: [1,1,1,3,3,4,3,2,4,2]
输出: true

*/

/* 
思路1：暴力双重遍历 -- 性能低
思路2：排序后遍历
思路3：哈希表
如果该元素已存在，则证明重复了
*/


/**
 * @param {number[]} nums
 * @return {boolean}
 */
 var containsDuplicate = function(nums) {
    //  思路1
    /* for(let i=0;i<nums.length;i++){
        for(let j=i+1;j<nums.length;j++){
            if(nums[i]==nums[j]){
                return true
            }
        }
        if(i==nums.length-1){
            return false
        }
    } */
    
    // 思路2
    /* nums.sort((a, b) => a - b);
    const n = nums.length;
    for (let i = 0; i < n ; i++) {
        if (nums[i] === nums[i + 1]) {
            return true;
        }
    }
    return false; */

    // 思路3
    let map = new Map()
    for (let i = 0; i < nums.length; i++) {
        if(map.has(nums[i])){
            return true
        }else{
            map.set(nums[i])
        }
    }
    return false
};

/* 

*/

// 运行
let nums = [1,1,1,3,3,4,3,2,4,2]
let res = containsDuplicate(nums)
console.log(res);